#pragma once

#include <iostream>
#include <string>
#include <functional>
#include "log.hpp"

typedef std::function<int(int, int)> func_t; // 定义一个函数类型，用于传递给Task

class Task
{
public:
    // 构造
    Task(){}
    Task(int x, int y, func_t func):_x(x),_y(y),_func(func)
    {}

    void operator()(const std::string& name)
    {
        // __FILE__ 和 __LINE__ : 预定义宏，用于获取当前文件名和行号。确保它们能够正确展开并提供有效的日志输出信息。
        logMessage(WARNING, "%s 处理完成: %d+%d=%d | %s | %d",
            name.c_str(), _x, _y, _func(_x, _y), __FILE__, __LINE__);
    }

private:
    int _x;
    int _y;
    func_t _func;
};